package com.zzl.bonds.ticket.service;

import com.zzl.bonds.ticket.dto.ticketopen.InvoiceResult;
import com.zzl.general.common.exception.SysException;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

/**
 * 文件中心
 *
 * @author gull
 * @date 2021-11-09 20:04:58
 */
public interface FileService {
    /**
     * 上传文件
     *
     * @param file 文件对象
     * @param type 类型
     * @return 上传文件并识别后的数据对象
     * @throws SysException 业务异常
     */
    void upLoadBusinessInfoFile(MultipartFile file, String type) throws SysException;

    /**
     * 手机上传图片
     *
     * @param file     文件
     * @param socketId 唯一标识
     * @param type     类型
     * @return 文件id
     * @throws SysException 业务异常
     */
    String upLoadFileByMobile(MultipartFile file, String socketId, String type) throws SysException;

    /**
     * 上传文件
     *
     * @param file   文件对象
     * @param bucket 文件桶
     * @return 文件id
     * @throws SysException 当调用feign时，无返回值或返回失败会抛出这个异常
     */
    String upLoadFile(MultipartFile file, String bucket) throws SysException;


    /**
     * 下载文件
     *
     * @param response 响应对象
     * @param bucket   桶
     * @param objId    文件对象id
     * @param fileName 文件名称
     */
    void downloadFile(HttpServletResponse response, String bucket, String objId, String fileName);

    /**
     * 上传发票
     *
     * @param file 文件
     * @return 发票信息
     */
    InvoiceResult uploadInvoiceFile(MultipartFile file) throws SysException;
}

